Wireless communication devices such as cellular telephones, pagers, personal digital assistants, and other handheld devices, are ubiquitous in the modern world. Frequently, such wireless communication devices are loaded with a plurality of software files including, for example, software application files for implementing a variety of software applications, such as, electronic mail (or email), web browsers, wallpaper settings, screensavers, ring tones, etc., as well as various dynamic link library (DLL) files, shared object files, firmware files, system configuration files, and other types of files required for the proper functioning of the wireless communication device. Occasionally, one or more of the aforementioned software files may need to be upgraded or revised for various reasons, for example, to correct software bugs that corrupt portions of those files (or even the entire files) and/or to adapt the files for use with evolving technologies. Software upgrades to files may also be required to install new software applications and/or to add new features to the wireless communication devices.
Several techniques of providing such software upgrades to wireless communication device have conventionally been used. One such technique is shown in FIGS. 1 and 2A-2C (Prior Art). FIG. 1 in particular shows a conventional software upgrade system 100 that employs a differencing component 102 in communication with an update component 104 of a wireless communication device (not shown) via a communication link 106. The differencing component 102 in particular includes a computer system 108 having an update package (UP) generator 110 that receives and determines differences between a first file (Software Version A) 112 and a second file (Software Version B) 114 to generate an update package file or simply update package 116 (represented as [UP A→B]) reflecting those differences. The communication link 106 can be representative of any one or more communication links and/or communication mechanisms allowing for communication between the differencing component 102 and the update component 104/wireless communication device (e.g., a digital wireless communication signal communicated electromagnetically), which are typically located apart from or remotely from one another.
With respect to the first and the second files 112 and 114, respectively, as well as the update package 116, each of these is a software file, exemplary details of which are shown in FIGS. 2A-C. Particularly, as shown in FIG. 2A, the first file 112 is an old or original version (e.g., Version A) of a software file while, as shown in FIG. 2B, the second file 114 is a new and revised version (e.g., Version B) of the first file, which includes one or more software upgrades in order to correct software bugs, update pre-existing software characteristic, and/or to add new features. As further shown in FIG. 2A, the first file 112 can include a plurality of software applications, for example, an e-mail application 200, a calendar application 202, a web browser application 204, as well as a cellular call processing stack 206, user interface services software 208, digital signaling processor software 209, a language pack 210, etc. Each of the aforementioned software applications 200-210 is composed of a series of computer instructions or software code. FIG. 2A in particular illustrates an exemplary software code portion 212 suitable for governing operation of a software application XYZ (which is intended to be representative of any of the applications 200-210).
FIG. 2B by comparison illustrates how, in at least the present exemplary embodiment, the second file 114 includes much of the same, but additionally some new, software portions relative to the first file 112. More particularly as shown, the second file 114 carries over the software applications 200-210 from the first file 112 without any revisions thereto, as well as adds instant messaging client software 214. Further, by comparison with the software code 212 of the first file 112, the second file 114 is shown to incorporate exemplary software code upgrades 216 and 218. The differences between the first and the second files 112 and 114, respectively, are identified specifically in a third file 220 shown in FIG. 2C, which is an example of the update package 116 of FIG. 1. As shown, the third file 220 in particular includes the instant messaging client software 214, as well as the software code upgrades 216 and 218 of FIG. 2B, all of which were added as upgrades to the second file 114.
Turning back to FIG. 1, upon generating the update package 116, it is delivered via the communication link 106 to the update component 104. The update component 104 is a component within the wireless communication device that receives the update package 116 and is capable of regenerating the second file 114 (that is, generating a copy of the second file 114 existing at the differencing component 102) from the update package 116 assuming that the update component 104 already has in its possession the first file 112. Upon regenerating the second file 114, the update component 104 then additionally installs that file onto the wireless communication device. In the present embodiment, the update component 104 includes a memory component 118 (e.g., Read Only Memory (ROM)) that is divided into several regions, namely, a file system region 120 where various software applications are stored, a software region 122 where a copy of one file (e.g., the first file 112) is installed prior to upgrading and another file (e.g., the second file 114) that replaces the one file upon completion of upgrading, a reserved ROM region 124, and an update agent (UA) region 126, which implements an update agent software program to perform updating (e.g., updating of the first file with the second file).
FIG. 1 in particular shows the same update component 104/memory component 118 three times to illustrate schematically how the contents stored within the memory component evolve over three steps of the updating operation. During the updating operation, the update package 116 first is delivered through the communication link 106 into the memory 118 as shown in a first step 128 and, upon being received, is then downloaded (as shown by an arrow 130) into the reserved ROM region 124 of the memory, as shown in a second step 132. Also as shown, during steps 128 and 132, the software region 122 stores the first (non-updated) file 112. Next, at a third step 134, the update agent provided by the UA region 126 operates upon the update file represented by the update package 116 (as shown by an arrow 136) to generate the second file 114 based upon the first file 112 stored within the software region 122. The second file 114 is then stored and replaces the first file 112 within the software region 122 (as shown by an arrow 138).
In this manner, therefore, software (including firmware) upgrades can be delivered and installed within the wireless communication device by first determining the differences between the old and the revised software files (e.g., the first and second files 112 and 114, respectively), transmitting the differences to the wireless communication device, and using those differences to generate a copy of the revised software file (e.g., the second file 114) within the wireless communication device.
Although adequate in some respects, such conventional techniques of upgrading software files within a wireless communication device are nevertheless inadequate in at least certain respects. For example, when the size of the update package is large, delivery of the update package to the update component of the wireless communication device can be slow, and also the processing time (e.g., update time) within the wireless communication device can be long, thereby affecting device performance. Large update packages also necessitate large capacity at the reserved ROM region. In addition, in cases when the update package exceeds the size of the reserved ROM region allocated for storing the update package, delivery of the update package to the update component of the wireless communication device may be partially (or possibly entirely) restricted.
It would therefore be advantageous if an improved system and/or method could be developed for delivering software and/or firmware updates (or upgrades) to wireless communication devices that alleviate at least some of the problems mentioned above.